package com.jim.healio.graphrag.service;

import com.jim.healio.graphrag.model.MedicalEntity;
import com.jim.healio.graphrag.model.MedicalDocument;
import com.jim.healio.graphrag.model.DocumentSearchResult;

import java.util.List;

/**
 * GraphRAG核心服务接口
 */
public interface GraphRAGService {
    
    /**
     * 查询医学实体
     */
    List<MedicalEntity> queryEntities(String query);
    
    /**
     * 语义搜索文档
     */
    List<DocumentSearchResult> semanticSearch(String query, int limit);
    
    /**
     * 混合搜索：结合图谱和向量检索
     */
    List<DocumentSearchResult> hybridSearch(String query, List<String> entityIds, int limit);
    
    /**
     * 根据实体ID查询相关文档
     */
    List<DocumentSearchResult> queryDocumentsByEntity(String entityId, int limit);
    
    /**
     * 分析症状关联
     */
    List<MedicalEntity> analyzeSymptomRelations(List<String> symptoms);
    
    /**
     * 查询药物相互作用
     */
    List<MedicalEntity> queryDrugInteractions(List<String> drugs);
    
    /**
     * 获取治疗指南
     */
    List<DocumentSearchResult> getTreatmentGuidelines(String condition);
    
    /**
     * 存储医学文档
     */
    void storeDocument(MedicalDocument document);
    
    /**
     * 存储医学实体
     */
    void storeEntity(MedicalEntity entity);
} 